package com.brsya.movie.contract;

import com.brsya.base.base.BaseView;
import com.brsya.base.bean.BaseListBean;
import com.brsya.base.bean.BaseObjectBean;
import com.brsya.base.bean.MovieListBean;

import java.util.List;
import java.util.Map;

import io.reactivex.rxjava3.core.Observable;

/**
 * Created by Brsya
 * CreateDate: 2022/7/5  17:31
 * Description:
 * 首页精选
 */
public interface MovieListContract {

    interface Model {
        /**
         * 获取影视列表
         *
         * @param par code 影视列表code
         */
        Observable<BaseObjectBean<MovieListBean>> getMovieList(Map<String, Object> par);

        /**
         * 获取影视列表
         *
         * @param par code 影视列表code
         */
        Observable<BaseListBean<MovieListBean.ContentListDTO.VideoListDTO>> getNewMovieList(Map<String, Object> par);
    }

    interface View extends BaseView {
        /**
         * 显示影视列表
         *
         * @param movieList 影视列表
         */
        void showMovieList(List<MovieListBean.ContentListDTO> movieList);

        /**
         * 显示banner
         *
         * @param bannerList 数据
         */
        void showBanner(List<MovieListBean.BannerListDTO> bannerList);

        /**
         * 显示tab
         *
         * @param tabList tab列表 数据结构与影视一样，缺少影视列表
         */
        void showTab(List<MovieListBean.ContentListDTO> tabList);

        /**
         * 换一换接口
         */
        void showMovieListById(int id, String page, List<MovieListBean.ContentListDTO.VideoListDTO> movieList);
    }

    interface Presenter {
        /**
         * 获取影视列表
         *
         * @param code 影视列表code 可为空 空请求精选页数据
         */
        void getMovieList(String code);

        /**
         * 换一换
         *
         * @param id   标题id
         * @param page 页码
         */
        void getMovieList(int id, String page);
    }
}
